package main

import "fmt"

type Usb interface {
	start()
	stop()
}

type Phone struct {
	Name string
}

type Camera struct {
	Name string
}

func (this *Phone) start() {
	fmt.Println(this.Name, "start()")
}
func (this *Phone) stop() {
	fmt.Println(this.Name, "stop()")
}

func (this *Camera) start() {
	fmt.Println(this.Name, "start()")
}
func (this *Camera) stop() {
	fmt.Println(this.Name, "stop()")
}

// 多态接口，实现接口方法的情况下，可以把每个变量放在一个数组里（数组必须是同一个类型，usbArr里面的数据类型都是 Usb）
func main() {
	var usbArr [4]Usb
	usbArr[0] = &Phone{"iphone"}
	usbArr[1] = &Phone{"huawei"}
	usbArr[2] = &Camera{"Hasselblad"}
	usbArr[3] = &Camera{"sony"}
	for _, v := range usbArr {
		fmt.Printf("%v \n", v)
	}
}
